<?php
namespace app\common\service\webscoket;

use think\facade\Cache;

/**
 * redis缓存类
 */
class CacheRedisService
{
    // 缓存标签
    public static $tag = 'cr_set';
    // 缓存前缀
    protected static $prefix = 'cr_set:'; // 这里应该是静态的，因为你在静态方法中调用它

    /**
     * 缓存关键字
     * @param $key 关键字
     * @return string
     */
    public static function key($key)
    {
        return self::$prefix . $key; // 修改为静态属性调用
    }

    /**
     * 缓存标签
     * @param $tag
     * @return string
     */
    public static function tag($tag)
    {
        return $tag ?: self::$tag;
    }

    /**
     * 缓存设置
     * @param $key 关键字
     * @param $info 内容
     * @param $ttl 缓存时间
     * @param $tag 标签
     * @return bool
     */
    public static function set($key, $info, $ttl = 43200, $tag = "")
    {
        return Cache::store('redis')
            ->tag(self::tag($tag))
            ->set(self::key($key), $info, $ttl);
    }

    /**
     * 缓存获取
     * @param $key 关键字
     * @return mixed
     */
    public static function get($key)
    {
        return Cache::get(self::key($key));
    }
    /**
     * 单个缓存删除
     * @param $key 关键字(单个或者数组)
     * @return true
     */
    public static function delete($key)
    {
        $ids = var_to_array($key);
        foreach ($ids as $v) {
            Cache::delete(self::key($v));
        }
        return true;
    }
    /**
     * 集合缓存删除
     * @param $key 关键字(单个或者数组)
     * @return true
     */
    public static function del($key)
    {
        $ids = is_array($key) ? $key : [$key];
        foreach ($ids as $v) {
            Cache::store('redis')->del(self::key($v));
        }
        return true;
    }

    /**
     * 缓存清除
     * @param $tag
     * @return bool
     */
    public static function clear($tag = "")
    {
        return Cache::tag(self::tag($tag))->clear();
    }

    /**
     * 集合添加
     * @param $key 关键字
     * @param $info 内容
     * @return bool
     */
    public static function sAdd($key, $info)
    {
        $cache = Cache::store('redis');
        $info = is_array($info) ? $info : [$info];
        foreach ($info as $v) {
            $cache->sAdd(self::key($key), $v);
        }
        return true;
    }

    /**
     * 获取集合内容
     * @param $key
     * @return mixed
     */
    public static function sMembers($key)
    {
        return Cache::store('redis')->sMembers(self::key($key));
    }

    /**
     * 删除集合内容
     * @param $key 关键字
     * @param $info 内容
     * @return bool
     */
    public static function sRem($key, $info)
    {
        $cache = Cache::store('redis');
        $info = is_array($info) ? $info : [$info];
        foreach ($info as $v) {
            $cache->sRem(self::key($key), $v);
        }
        return true;
    }

    /**
     * 设置集合缓存时间
     * @param $key 关键字
     * @param $ttl 时间
     * @return bool
     */
    public static function expire($key, $ttl = 43200)
    {
        return Cache::store('redis')->expire(self::key($key), $ttl);
    }
    public static function pttl($key)
    {
        return Cache::store('redis')->pttl(self::key($key));
    }



}
